import cv2
import numpy as np

# 读取图像
image = cv2.imread('Bright1.jpg')  # 替换为你的图片路径

# 检查图像是否成功读取
if image is None:
    print("无法读取图像")
    exit()

# 转换到 HSV 颜色空间
hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)

# 定义白色色块的 HSV 范围
# 白色的 HSV 范围通常为 H:0-180, S:0-255, V:200-255
# 217, 171, 181
lower_white = np.array([0, 0, 200])
upper_white = np.array([180, 255, 255])

# 创建白色色块的掩码
mask = cv2.inRange(hsv_image, lower_white, upper_white)

# 使用掩码提取白色色块
result = cv2.bitwise_and(image, image, mask=mask)

# 找到白色色块的轮廓
contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

# 遍历轮廓并标记白色色块的位置
for contour in contours:
    # 计算轮廓的边界框
    x, y, w, h = cv2.boundingRect(contour)

    # 计算轮廓的面积
    area = cv2.contourArea(contour)

    # 如果面积大于一定阈值，认为是白色色块
    if area > 40:  # 根据实际情况调整阈值
        # 在原图上标记白色色块的位置
        cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2)

# 显示结果
cv2.imshow('Original Image', image)
cv2.imshow('Mask', mask)
cv2.imshow('Result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()